$(document).ready(function(){
	//Si existe entro a la opcion de ver compra
	//de lo contrario entra a agregar compra o gasto
	if($("#view").length == 0){
		$("#dfecha").datepicker({
			 dateFormat: 'yy-mm-dd', //formato de la fecha - dd,mm,yy=dia,mes,año numericos  DD,MM=dia,mes en texto
			 //minDate: '-2Y', maxDate: '+1M +10D', //restringen a un rango el calendario - ej. +10D,-2M,+1Y,-3W(W=semanas) o alguna fecha
			 changeMonth: true, //permite modificar los meses (true o false)
			 changeYear: true, //permite modificar los años (true o false)
			 //yearRange: (fecha_hoy.getFullYear()-70)+':'+fecha_hoy.getFullYear(),
			 numberOfMonths: 1 //muestra mas de un mes en el calendario, depende del numero
		 });
		
		//Cambio credito, contado
		$("#dcondicion_pago").on("change", function(){
			if($(this).val() == "cr")
				$("#vplazo_credito").show();
			else
				$("#vplazo_credito").hide();
		});
		
		asignaSuperBox();
		
		//Asigna autocomplete de Cliente
		$("#dcliente").catcomplete({
			source: base_url+'panel/clientes/ajax_get_clientes/',
			minLength: 1,
			selectFirst: true,
			select: function( event, ui ) {
				$("#did_cliente").val(ui.item.id);
				createInfoCliente(ui.item.item);
				$("#dcliente").css("background-color", "#B0FFB0");

				$('#linkAddOrdns').html('<a href="'+base_url+'panel/facturacion/get_ordenest?id_cliente='+ui.item.id+'" class="linksm f-r" style="margin: 0px 20px 0 0px;" rel="superbox[iframe][1000x600]"> <img src="'+base_url+'application/images/privilegios/add.png" width="16" height="16">  Agregar Ordenes</a>');
				asignaSuperBox();
				
				$("#dplazo_credito").val(ui.item.item.dias_credito);
				
				$("#dmetodo_pago option").removeAttr('selected');
				$("#dmetodo_pago option[value='"+ui.item.item.metodo_pago+"']").attr("selected", "selected");
				$("#dmetodo_pago_digitos").val(ui.item.item.metodo_pago_digitos);
			}
		}).on("keydown", function(event){
			if(event.which == 8 || event == 46){
				$("#dcliente").css("background-color", "#FFD9B3");
				$("#did_cliente").val("");
				$("#dcliente_rfc").val("");
				$("#dcliente_domici").val("");
				$("#dcliente_ciudad").val("");
				
				$("#dplazo_credito").val("7");
				
				//quito las ordenes y productos
				$(".dordns_quit").remove();
				$(".trp_quit").remove();
				calculaTotales();
				
				$('#linkAddOrdns').html('<a href="javascript:void(0);" class="linksm f-r" style="margin: 0px 20px 0 0px;" onclick="alerta(\'Seleccione un Cliente !\');"> <img src="'+base_url+'application/images/privilegios/add.png" width="16" height="16"> Agregar Ordenes</a>');
			}
		});
		
		//Carga el folio para la serie seleccionada
		$("#dserie").on('change', function(){
			loader.create();
			$.getJSON(base_url+'panel/facturacion/get_folio/?serie='+$(this).val(), 
			function(res){
				if(res.msg == 'ok'){
					$("#dfolio").val(res.data.folio);
					$("#dno_aprobacion").val(res.data.no_aprobacion);
					$("#dano_aprobacion").val(res.data.ano_aprobacion);
					$("#dimg_cbb").val(res.data.imagen);
				}else{
					$("#dfolio").val('');
					$("#dno_aprobacion").val('');
					$("#dano_aprobacion").val('');
					$("#dimg_cbb").val('');

					create("withIcon", {
						title: res.title, 
						text: res.msg, 
						icon: base_url+'application/images/alertas/'+res.ico+'.png' });
				}
				loader.close();
			});
		});
		
		//evento al metodo de pago
		$("#dmetodo_pago").on('change', function(){
			if($(this).val() == 'efectivo')
				$("#dmetodo_pago_digitos").val('');
			else
				$("#dmetodo_pago_digitos").val('No identificado');
		});
		
		//evento retener iva
		$("#dreten_iva").on('change', function(){
			calculaTotales();
		});
		
	}else{ //ver factura
		if($("#tbl_productos").length > 0)
			calculaTotales();
		else
			calculaTotalesGasto();
		
		//guardar digitos de metodo pago
		$("#dmetodo_pago_digitos").on("change", function(){
			loader.create();
			$.post(base_url+"panel/facturacion/metodo_pago/", "id_factura="+$("#id_factura").val()+"&mp_digitos="+$(this).val(),
			  function(data){
				
				create("withIcon", {
					title: data.title, 
					text: data.msg, 
					icon: base_url+'application/images/alertas/'+data.ico+'.png' });
				
				loader.close();
			  }, "json");
		});
	}
});


/**
 * Crea una cadena con la informacion del cliente para mostrarla
 * cuando se seleccione
 * @param item
 * @returns {String}
 */
function createInfoCliente(item){
	var info = '', info2 = '';
	info += item.calle!=''? item.calle: '';
	info += item.no_exterior!=''? ' #'+item.no_exterior: '';
	info += item.no_interior!=''? '-'+item.no_interior: '';
	info += item.colonia!=''? ', '+item.colonia: '';
	info += (item.localidad!=''? ', '+item.localidad: '');
	
	info2 += item.municipio!=''? item.municipio: '';
	info2 += item.estado!=''? ', '+item.estado: '';
	info2 += item.cp!=''? ', CP: '+item.cp: '';
	
	$("#dcliente_rfc").val(item.rfc);
	$("#dcliente_domici").val(info);
	$("#dcliente_ciudad").val(info2);
	$("#demail").val(item.email)
}

/**
 * Carga los productos de las ordenes de trabajo seleccionadas
 * @param ordenest
 */
function cargarOrdenes(ordenest){
	var ords = ordenest.split(";"), ord='', new_ordens = '', existen=false;
	for(ord in ords){
		if($("#dordns"+ords[ord].replace(".", "_")).length == 0){
			new_ordens += ','+ords[ord];
			$("#ids_ordenest").append('<input type="hidden" name="dids_ordenest[]" value="'+ords[ord]+'" id="dordns'+ords[ord].replace(".", "_")+'" class="dordns_quit">');
		}else
			existen = true;
	}
	
	loader.create();
	$.getJSON(base_url+'panel/facturacion/get_productos_ordenes/?ordenes='+new_ordens.substr(1), 
	function(res){
		var itm = undefined;
		for(itm in res){
			agregarProductos(res[itm]);
		}
		$("#superbox p.close a").click();
		loader.close();
		
		if(existen){
			alerta("Una o mas ordenes seleccionadas ya estan agregadas.");
		}
	});
}


function asignaSuperBox(){
	$.superbox();
	$("#superbox p.close").css("display", "none");
	$("##superbox #superbox-innerbox").css("padding", "0");
}


/***** Productos ****/
/**
 * Agrega productos a la lista
 */
function agregarProductos(res){
	/*var res = validaProducto();
	if(res.status){*/
		//Agrego el tr con la informacion del contacto agregado
		$("#tbl_productos tr.header:last").after(
		'<tr id="trp-'+res.id_producto.replace(".", "_")+'" class="trp_quit">'+
		'	<td>'+
		'		<input type="hidden" name="dpid_producto[]" value="'+res.id_producto+'">'+
		'		<input type="hidden" name="dpcantidad[]" value="'+res.cantidad+'">'+
		'		<input type="hidden" name="dpprecio_unitario[]" value="'+res.precio_unitario+'">'+
		'		<input type="hidden" name="dpimporte[]" value="'+(res.importe)+'" class="dpimporte">'+
		'		<input type="hidden" name="dptaza_iva[]" value="'+res.taza_iva+'">'+
		'		<input type="hidden" name="dpimporte_iva[]" value="'+(res.importe_iva)+'" class="dpimporte_iva">'+
		'		<input type="hidden" name="dpcodigo[]" value="'+res.codigo+'">'+
		'		<input type="hidden" name="dpnombre[]" value="'+res.nombre+'">'+
				res.cantidad+'</td>'+
		'	<td>'+res.codigo+'</td>'+
		'	<td>'+res.nombre+'</td>'+
		'	<td>'+util.darFormatoNum(res.precio_unitario)+'</td>'+
		'	<td>'+util.darFormatoNum(res.importe)+'</td>'+
		'</tr>');
		
		calculaTotales();
		
		//limpiaProducto();
	//}
}
/**
 * Calcula los tatales de la factura
 */
function calculaTotales(){
	var importe=0, iva=0, total=0, retencion=0;
	$(".dpimporte").each(function(){
		importe += parseFloat($(this).val(), 2);
	});
	$(".dpimporte_iva").each(function(){
		iva += parseFloat($(this).val(), 2);
	});
	
	retencion = util.darFormatoNum(parseFloat($("#dreten_iva").val())*iva, '', false);
	$("#dtretencion_iva").val(retencion);
	
	$("#dtsubtotal").val(util.darFormatoNum(importe, '', false));
	$("#dtiva").val(util.darFormatoNum(iva, '', false));
	total = util.darFormatoNum(importe+iva-retencion, '', false);
	$("#dttotal").val(total);
	
	$("#ta_subtotal").text(util.darFormatoNum(importe));
	$("#ta_iva").text(util.darFormatoNum(iva));
	$("#ta_total").text(util.darFormatoNum(total));
	$("#ta_retencion_iva").text(util.darFormatoNum(retencion));
	
	$("#dttotal_letra").val(util.numeroToLetra.covertirNumLetras(total+""));
}
/**
 * Limpia los valores del form agregar productos a la lista
 */
function limpiaProducto(){
	$("#a_id_producto").val("");
	$("#a_cantidad").val("1");
	$("#a_pu").val("0");
	$("#a_codigo").val("").focus();
	$("#a_nombre").val("");
	$("#a_iva").val("");
}




function recargar(){
	window.location = window.location.href+"?msg=4";
}



function alerta(msg){
	create("withIcon", {
		title: 'Avizo !',
		text: msg, 
		icon: base_url+'application/images/alertas/info.png' });
}



/**
 * Modificacion del plugin autocomplete
 */
$.widget( "custom.catcomplete", $.ui.autocomplete, {
	_renderMenu: function( ul, items ) {
		var self = this,
			currentCategory = "";
		$.each( items, function( index, item ) {
			if(item.category != undefined){
				if ( item.category != currentCategory ) {
					ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
					currentCategory = item.category;
				}
			}
			self._renderItem( ul, item );
		});
	}
});

